home *** CD-ROM | disk | FTP | other *** search
/ Ultra Pack / UltraComputing Partner Applications.iso / SunLabs / tclTK / src / tk4.0 / README < prev    next >
Text File  |  1995-06-30  |  31KB  |  649 lines

  1. The Tk Toolkit
  2.  
  3. by John Ousterhout
  4. john.ousterhout@eng.sun.com
  5.  
  6. @(#) README 1.18 95/06/16 08:42:07
  7.  
  8. 1. Introduction
  9. ---------------
  10.  
  11. This directory contains the sources and documentation for Tk, an
  12. X11 toolkit that provides the Motif look and feel and is implemented
  13. using the Tcl scripting language.  The information here corresponds
  14. to Tk 4.0.  This is a MAJOR new release with many new features and
  15. several incompatible changes.  See below for details on the changes
  16. and for information on porting Tk 3.6 scripts to Tk 4.0.  This release
  17. is designed to work with Tcl 7.4 and may not work with other releases
  18. of Tcl.
  19.  
  20. 2. Documentation
  21. ----------------
  22.  
  23. The best way to get started with Tk is to read one of the introductory
  24. books on Tcl and Tk:
  25.  
  26.     Tcl and the Tk Toolkit, by John Ousterhout,
  27.     Addison-Wesley, 1994, ISBN 0-201-63337-X
  28.  
  29.     Practical Programming in Tcl and Tk, by Brent Welch,
  30.     Prentice-Hall, 1995, ISBN 0-13-182007-9
  31.  
  32. The "doc" subdirectory in this release contains a complete set of
  33. reference manual entries for Tk.  Files with extension ".1" are for
  34. programs such as wish; files with extension ".3" are for C library
  35. procedures; and files with extension ".n" describe Tcl commands.  To
  36. print any of the manual entries, cd to the "doc" directory and invoke
  37. your favorite variant of troff using the normal -man macros, for example
  38.  
  39.         ditroff -man wish.1
  40.  
  41. to print wish.1.  If Tk has been installed correctly and your "man"
  42. program supports it, you should be able to access the Tcl manual entries
  43. using the normal "man" mechanisms, such as
  44.  
  45.         man wish
  46.  
  47. If you are porting Tk 3.6 scripts to Tk 4.0, you may find the Postscript
  48. file doc/tk4.0.ps useful.  It is a porting guide that summarizes the
  49. new features and discusses how to deal with the changes in Tk 4.0
  50. that are not backwards compatible.
  51.  
  52. 3. Compiling and installing Tk
  53. ------------------------------
  54.  
  55. This release should compile and run with little or no effort on any
  56. UNIX-like system that approximates POSIX, BSD, or System V and runs
  57. the X Window System.  I know that it runs on workstations from Sun,
  58. H-P, and DEC.  To compile Tk, do the following:
  59.  
  60.     (a) Make sure that this directory and the corresponding release of
  61.         Tcl are both subdirectories of the same directory.  This
  62.     directory should be named tk4.0 and the Tcl release directory
  63.     should be named tcl7.4.
  64.  
  65.     (b) Check for patches.  Look in the FTP directory from which you
  66.         retrieved the base distribution and see if there are files with
  67.     names like tk4.0p1.patch, tk4.0p2patch, etc.  These files may
  68.     also have .Z extensions to indicate compression.  If you find
  69.     any patch files, apply them to the source directory in order
  70.     from "p1" up.  To apply an uncompressed patch file such as
  71.     tk4.0p1.patch, invoke a shell command like the following from
  72.     the directory containing this file:
  73.         patch -p < tk4.0p1.patch
  74.     If the patch file is compressed, invoke a command like the following:
  75.         zcat tk4.0p2.patch.Z | patch -p
  76.  
  77.     (c) Type "./configure" in this directory.  This runs a configuration
  78.     script created by GNU autoconf, which configures Tk for your
  79.     system and creates a Makefile.  The configure script allows you
  80.     to customize the Tk configuration for your site;  for details on
  81.     how you can do this, check out the autoconf documentation (not
  82.     included here).
  83.  
  84.     (d) Type "make".  This will create a library archive called "libtk.a"
  85.     and an interpreter application called "wish" that allows you to type
  86.     Tcl commands interactively or execute script files.
  87.  
  88.     (e) If the make fails then you'll have to personalize the Makefile
  89.         for your site or possibly modify the distribution in other ways.
  90.     First check the file "porting.notes" to see if there are hints
  91.     for compiling on your system.  If you need to modify Makefile,
  92.     there are comments at the beginning of it that describe the things
  93.     you might want to change and how to change them.
  94.     
  95.     (f) Type "make install" to install Tk's binaries and script files in
  96.         standard places.  You'll need write permission on the installation
  97.     directoryies to do this.  The installation directories are
  98.     determined by the "configure" script and may be specified with
  99.     the --prefix and --exec_prefix options to "configure".  See the
  100.     Makefile for information on what directories were chosen; you
  101.     can override these choices by modifying the "prefix" and
  102.     "exec_prefix" variables in the Makefile.
  103.  
  104.     (g) At this point you can play with Tk by invoking the "wish"
  105.     program and typing Tcl commands.  However, if you haven't installed
  106.     Tk then you'll first need to set your TK_LIBRARY environment
  107.     variable to hold the full path name of the "library" subdirectory.
  108.     If you haven't installed Tcl either then you'll need to set your
  109.     TCL_LIBRARY environment variable as well (see the Tcl README file
  110.     for information on this).  Note that installed versions of wish,
  111.     libtk.a, and the Tk library have a version number in their names,
  112.     such as "wish4.0" or "libtk4.0.a"; to use the installed versions,
  113.     either specify the version number or create a symbolic link (e.g.
  114.     from "wish" to "wish4.0").
  115.  
  116. If you have trouble compiling Tk, I'd suggest looking at the file
  117. "porting.notes".  It contains information that people have sent me about
  118. changes they had to make to compile Tcl in various environments.  Or,
  119. check out the following Web URL:
  120.     http://www.sunlabs.com/cgi-bin/tcl/info.4.0
  121. This is an on-line database of porting information.  I make no guarantees
  122. that this information is accurate, complete, or up-to-date, but you may
  123. find it useful.  If you get Tk running on a new configuration and had to
  124. make non-trivial changes to do it, I'd be happy to receive new information
  125. to add to "porting.notes".  You can also make a new entry into the
  126. on-line Web database.  I'm also interested in hearing how to change the
  127. configuration setup so that Tcl compiles on additional platforms "out of
  128. the box".
  129.  
  130. 4. Test suite
  131. -------------
  132.  
  133. Tk has a substantial self-test suite, consisting of a set of scripts in
  134. the subdirectory "tests".  To run the test suite just type "make test"
  135. in this directory.  You should then see a printout of the test files
  136. processed.  If any errors occur, you'll see a much more substantial
  137. printout for each error.  In order to avoid false error reports, be sure
  138. to run the tests with an empty resource database (e.g., remove your
  139. .Xdefaults file or delete any entries starting with *).  See the README
  140. file in the "tests" directory for more information on the test suite.
  141.  
  142. If the test suite generates errors, most likely they are due to non-
  143. portable tests that are interacting badly with your system configuration.
  144. I'm gradually eliminating the non-portable tests, but this release
  145. includes many new tests so there will probably be some portability
  146. problems.  As long as the test suite doesn't core dump, it's probably
  147. safe to conclude that any errors represent portability problems in the
  148. test suite and not fundamental flaws with Tk.
  149.  
  150. There are also a number of visual tests for things such as screen layout,
  151. Postscript generation, etc.  These tests all have to be run manually and
  152. the results have to be verified visually.  To run the tests, cd to the
  153. "tests" directory and run the script "visual".  It will present a main
  154. window with a bunch of menus, which you can use to select various tests.
  155.  
  156. 5. Additional release information
  157. ---------------------------------
  158.  
  159. There is now an official home for Tcl and Tk on the Web at the following
  160. URL:
  161.     http://www.sunlabs.com/research/tcl
  162. These Web pages include release updates, reports on bug fixes and
  163. porting issues, and pointers to many other Tcl/Tk Web pages at other
  164. sites.  Check them out!
  165.  
  166. 6. Getting started
  167. ------------------
  168.  
  169. The best way to get started with Tk is by reading one of the introductory
  170. books.
  171.  
  172. The subdirectory library/demos contains a number of pre-canned scripts
  173. that demonstrate various features of Tk.  See the README file in the
  174. directory for a description of what's available.  The file
  175. library/demos/widget is a script that you can use to invoke many individual
  176. demonstrations of Tk's facilities, see the code that produced the demos,
  177. and modify the code to try out alternatives.
  178.  
  179. 7. Summary of changes in Tk 4.0
  180. -------------------------------
  181.  
  182. Tk 4.0 is a major new release that contains many new features and
  183. several incompatible changes.  You will probably need to modify existing
  184. scripts and C code in order for them to work with Tk 4.0.  Below is a
  185. summary of the most significant improvements and a complete list of
  186. incompatibilties.  There have also been countless bug fixes;  for
  187. more information, see the file "changes".
  188.  
  189. There is also a porting document available in the Postscript file
  190. "doc/tk4.0.ps".  It describes the changes and incompatibilities in
  191. Tk 4.0 and gives advice on how to modify Tk 3.6 scripts to run under
  192. Tk 4.0.  The porting document will be updated as new information
  193. becomes available;  the latest version will be available via the
  194. Tcl/Tk Web pages at Sun (see above).
  195.  
  196. Here is a summary of the new features:
  197.  
  198.     1. All of the widgets have been overhauled.  The most important
  199.     change is better Motif compliance, including a completely new set of
  200.     bindings to match Motif.  Text and entry widgets also have a set of
  201.     Emacs-like bindings.  Some additional changes to widgets:
  202.     - All widgets now have a "cget" widget command, which provides
  203.       a simpler way to retrieve the value of a configuration option.
  204.     - All widgets have -highlightthickness and -highlightcolor options
  205.       for controlling the traversal highlight, and the traversal
  206.       highlight is displayed whenever the widget has the input focus.
  207.     - Entries support justification and a "-show" option for (not)
  208.       displaying passwords.  They will autosize to fit their text
  209.       if "-width 0" is specified.
  210.     - The label/button family of widgets now supports multi-line text
  211.       and justification.  The -selector option for check and radio
  212.       buttons has been replaced with -selectcolor and -indicatoron
  213.       options.
  214.     - Listboxes support all of the Motif selection modes (e.g. single
  215.       and multiple selections, and disjoint selections);  the "selection"
  216.       widget command changed to support this.  Listboxes will auto-size
  217.       around their contents if "-width 0" or "-height 0" is specified,
  218.       and they have new "see", "bbox", and "activate" widget commands.
  219.     - Scales support real values and a linked variable, and their
  220.       bindings are now defined in Tcl instead of being hard-wired
  221.       in C.  Several of the configuration options have been renamed.
  222.     - Scrollbars have a new interface to the controlling widget, which
  223.       provides more flexibility than the old style (the old style is
  224.       still supported, for compatibility).  The behavior of scrollbars
  225.       is now defined with Tcl bindings rather than being hard-wired
  226.       in C, and there are several new widget commands for scrollbars.
  227.       Several of the configuration options have been renamed.
  228.     - Menu entries support several new options such as -foreground and
  229.       -indicatoron, and tear-off menus have been reimplemented to be
  230.       more Motif-like.  The procedures "tk_menuBar" and
  231.       "tk_bindForTraversal" are no longer needed, but they exist as
  232.       empty stubs for compatibility.
  233.     - Menu buttons have a -indicatoron option for displaying an option
  234.       menu indicator.  Also, there is built-in support for option menus
  235.       and popup menus:  see the manual entries for tk_optionMenu and
  236.       tk_popup.
  237.     - The variable "tk_strictMotif" is used in more places to enforce
  238.       event more strict Motif compliance.
  239.  
  240.     2. Changes to the binding mechanism:
  241.     - One binding triggers now for each binding tag (widget, class,
  242.       "all", etc.) instead of just one overall.
  243.     - A new command, "bindtags", provides control over the number
  244.       and order of the binding tags for a widget.  The default is
  245.       class, widget, its toplevel, and "all".
  246.     - "Break" and "continue" have meaning within binding scripts.
  247.     - Extraneous modifiers are now ignored in bindings, as if every
  248.       binding had an implicit "Any" modifier.
  249.     - The Meta and Alt modifiers are now computed from the modifier
  250.       map instead of being hard-wired to M1 and M2.
  251.  
  252.     3. Tk now contains a general-purpose image mechanism, including the
  253.     following:
  254.     - There is a new command "image" for creating images.
  255.     - Many widgets provide a "-image" option.
  256.     - Canvases contain a new "image" canvas item type.
  257.     - There is built-in support for two kinds of images:  bitmaps and
  258.       photos.  The photo image type was provided by Paul Mackerras and is
  259.       based on his "photo" widget.  It currently supports PPM, PGM,
  260.       and GIF formats, but can easily be extended to handle other
  261.       image types (see the manual entry for Tk_CreatePhotoImageFormat).
  262.     - There is an extension mechanism for defining new kinds of images.
  263.       See the manual entry for Tk_CreateImageType.
  264.  
  265.     4. Text widgets have undergone a major overhaul, including the following:
  266.     - They now support embedded windows;  read about the "window"
  267.       widget command.
  268.     - Many new tag configuration options have been added to support
  269.       tabs, justification, margins, line spacing, vertical offsets,
  270.       and overstrike.
  271.     - Added horizontal scrolling.
  272.     - Tags have been reimplemented so that they aren't sticky on
  273.       either side: a new character gets a tag only if the old
  274.       characters on both sides of it were tagged.  There is also
  275.       an optional "tagList" argument to the "insert" widget command
  276.       for specifying tags for new text.
  277.     - Marks have "gravity" to control which way the mark moves when
  278.       text is inserted at its position;  see the "mark gravity"
  279.       widget command.
  280.     - There are several new widget commands:  "search", "bbox,
  281.       "dlineinfo", and "see".
  282.     - The "end" tag now refers to a position just after the final
  283.       newline, rather than just before it.  You can now tag the newline
  284.       and set marks after it.
  285.  
  286.     5. Event handling has been improved in several ways:
  287.     - Mark Diekhan's "addinput" command has been incorporated under
  288.       the name "fileevent".
  289.     - "After" bindings can be cancelled now, and there is an
  290.       "after idle" command to create idle handlers.
  291.     - The event code has been repackaged so that it can be used without
  292.       the rest of Tk (see the manual entry for Tk_EventInit).
  293.     - There is a new form of file event handler:  see the manual entry
  294.       for Tk_CreateFileHandler2.
  295.  
  296.     6. Changes in the focus mechanism:
  297.     - Keyboard traversal of widgets is now built in.  See the manual
  298.       entry for "tk_focusNext".  Each widget has a "-takefocus"
  299.       option to control whether or not it gets the focus.
  300.     - Multiple displays are supported via the -displayof option to "focus".
  301.     - There is always a focus window now ("focus none" is no longer
  302.       allowable.  There is no "default" focus window;  instead, the
  303.       focus reverts to top-levels by default.
  304.     - Tk keeps track of a separate focus window for each top-level
  305.       window and automatically moves the focus there whenever the
  306.       window manager gives the focus to a top-level.  The default is
  307.       to use click-to-focus within a top-level but focus-follows-mouse
  308.       between top-levels;  however, you can make the focus follow the
  309.       mouse within a top-level too;  see the manual entry for
  310.       "tk_focusFollowsMouse".
  311.     - TkFocusIn and FocusOut events now follow the standard X mechanism
  312.       (they are delivered to all ancestors of the focus window, not just
  313.       the toplevel and the leaf).
  314.  
  315.     7. Changes in the "send" command:
  316.     - "Winfo interps" no longer returns stale interpreter names.
  317.     - Multiple displays are supported via the "-displayof" option.
  318.     - Asynchronous sends are permitted with the "-async" switch.
  319.     - Timeouts no longer occur, so sends can take as long as you like;
  320.       a send won't abort as long as the target application still exists.
  321.     - You can change the application's name with "tk appname".
  322.     - Window server security is checked on each send now.
  323.     - More complete error information is propagated back to the caller
  324.       now ("errorInfo" and "errorCode" variables).
  325.  
  326.     8. Selection support has been improved to handle multiple displays
  327.     and different kinds of selection (primary, secondary, etc.).
  328.     There is special support for the clipboard in the form of a new
  329.     "clipboard" command and procedure Tk_ClipboardClear and
  330.     Tk_ClipboardAppend.
  331.  
  332.     9. Changes to canvases:
  333.     - Polygon items now have -outline and -width options for drawing
  334.       outlines.
  335.     - Arc items have a new -outlinestipple option and "-style arc"
  336.       uses -outline and -outlinestipple for drawing instead of
  337.       -fill and -outline.
  338.     - The interface between generic canvas code and the various canvas
  339.       item types has been cleaned up, documented, and officially exported
  340.       so that you can define new item types.  See the manual entry for
  341.       Tk_CreateItemType.
  342.     - Bitmap items are now transparent if the -background option is
  343.       specified as empty.
  344.     - Several bugs relating to Postscript generation and arrowheads
  345.       have been fixed.
  346.     - The simulated grabs during button presses work more like those
  347.       that occur for widgets.
  348.     - Replace the -scrollincrement option with separate -xscrollincrement
  349.       and -yscrollincrement options.
  350.  
  351.     10. Changes to the Wish application:
  352.     - The "-file" keyword is no longer required (but it is still
  353.       supported for compatibility):  if the first argument to wish
  354.       doesn't start with "-", it is assumed to be the name of a
  355.       script file, just as for sh.
  356.     - It now uses a class name based on the application name, rather
  357.       than always using "Tk" as the class.
  358.     - Also, the main program for Tk has been renamed "Tk_Main", and
  359.       the real "main" is now part of tkAppInit.c.
  360.     - The -help option is no longer supported.
  361.  
  362.     11. Improvements in color handling:
  363.     - There is now explicit support in Tk for colormaps and visuals,
  364.       including -colormap and -visual options for toplevels and frames,
  365.       new commands "winfo visualsavailable" and "wm colormapwindows",
  366.           and procedures Tk_GetVisual, Tk_GetColormap, and Tk_FreeColormap.
  367.     - If a colormap fills up, Tk picks the closest color and continues:
  368.       there are no more "no more colors" errors.
  369.     - Shadow colors for borders are not allocated unless they are
  370.       actually needed for drawing;  if a colormap fills up, shadows
  371.       are drawn with stipples instead of colors.
  372.     - The default color for Tk has changed from bisque to gray, to match
  373.       standard desktop usage.  There are two new procedures for managing
  374.       color:  tk_setPalette may be used to change colors on the fly,
  375.       and tk_bisque restores the light brown scheme used in Tk 3.6 and
  376.       earlier versions.
  377.  
  378.     12. Toplevel windows are now resizable by default, and "wm iconwindow"
  379.     should work now (it never really worked before).  There is a new
  380.     "wm resizable" command for making windows non-resizable.
  381.  
  382.     13. I've patched around the Xlib bug whereby long-lived applications
  383.     used to crash because resource ids wrapped around.
  384.  
  385.     14. Geometry management has been improved in several ways:
  386.     - The -in option should now work correctly in the placer and
  387.       packer (it was quirky before).
  388.     - You can find out which manager controls a slave with the
  389.       "winfo manager" command.
  390.     - The C interfaces to geometry management have been reworked:
  391.       see the manual entry for Tk_ManageGeometry.
  392.  
  393.     15. There is a new "bell" command that does what you would expect.
  394.  
  395.     16. There is very primitive support for input methods, just barely
  396.     enough to handle the Compose key for European users.
  397.  
  398. Here is a list of incompatibilities that affect Tcl scripts:
  399.  
  400.     1. The default color of Tk applications has changed from bisque
  401.     to gray.  Use the "tk_bisque" procedure to restore the old colors.
  402.  
  403.     2. Conflict resolution in bindings is different:  if you have
  404.     bindings that augment or override class bindings, you'll probably
  405.     have to rework them.  Also, the new binding tags mechanism means
  406.     that top-level windows will also receive events that occur in
  407.     all their descendants.  If you have bindings for top-level windows,
  408.     you'll need to modify them to ignore the extra events.
  409.  
  410.     3. The -geometry option has been removed from toplevels, frames, and
  411.     listboxes; use -width and -height instead.
  412.  
  413.     4. When new text is added to a text widget, it only receives tags
  414.     present on *both* sides of the insertion point (it used to receive
  415.     any tags present to the left of the character).
  416.  
  417.     5. The class of Tk applications is no longer "Tk";  it is the
  418.     name of the script or program that embodies the application.
  419.  
  420.     6. The default padding for buttons and menubuttons has been changed
  421.     to match normal Motif behavior.
  422.  
  423.     7. Listboxes now return the selection as a string with one line per
  424.     entry, instead of a list.
  425.  
  426.     8. The procedure tk_listboxSingleSelect no longer exists;  use the
  427.     -selectMode option on the listbox instead.
  428.  
  429.     9. The transport format used for "send" has changed, so Tk 4.0
  430.     applications cannot communicate with Tk 3.6 applications.
  431.  
  432.     10. In entries, sel.last refers to the character just *after*
  433.     the last selected one, and the second index to the "delete" widget
  434.     command also refers to the character just after the last one to
  435.     delete.
  436.  
  437.     11. Changes to the binding mechansim:
  438.     - The "Any" modifier is now implicit in all bindings.
  439.     - %D substitutions are no longer supported.
  440.     - CirculateRequest, ConfigureRequest, MapRequest, and ResizeRequest
  441.       event types are no longer supported.
  442.     - % sequences that print window identifiers, such as %a and %S,
  443.       produce hexadecimal results instead of decimal.
  444.     - Enter, Leave, FocusIn, and FocusOut events with detail NotifyInferior
  445.       are now ignored (they can still be accessed from C, though).
  446.  
  447.     12. In scrollbars, the -background option has been renamed to
  448.     -troughcolor, -foreground has been renamed to -background, and
  449.     -activeforeground has been renamed to -foreground.
  450.  
  451.     13. In scales, the -sliderforeground option has been renamed to
  452.     -background, -background has been renamed to -troughcolor, and
  453.     -activeforeground has been renamed to -activebackground.  Scales
  454.     no longer accept hex or octal numbers in the "set" command or
  455.     the -from and -to options.
  456.  
  457.     14. For checkbuttons, radiobuttons, and the corresponding menu
  458.     entries, the -selector option has been renamed to -selectcolor,
  459.     and it can no longer be specified as empty;  instead, use the
  460.     -indicatoron option to specify whether or not to draw the indicator.
  461.  
  462.     15. The "enable" and "disable" widget commands have been eliminated
  463.     for menus:  use the -state configuration option instead.
  464.  
  465.     16. The "activate" and "deactivate" widget commands have been eliminated
  466.     for buttons, checkbuttons, radiobuttons, and menubuttons;  use the
  467.     -state configuration option instead.
  468.  
  469.     17. The obsolete variable "tkVersion" is no longer supported;  use
  470.     tk_version instead.
  471.  
  472.     18. The syntax of the "scan" widget command for texts has changed.
  473.  
  474.     19. Wish no longer recognizes the -help option.
  475.  
  476.     20. Tk always prints real numbers, such as canvas coordinates, with
  477.     a decimal point, so that they cannot get confused with integers.
  478.  
  479.     21. The command "pack newinfo" has been renamed to "pack info", and
  480.     the old "pack info" command (which was obsolete) no longer exists.
  481.  
  482.     22. The -scrollcommand option for entries has been changed to
  483.     -xscrollcommand, and the "view" widget command has been changed to
  484.     "xview".
  485.  
  486.     23. "Winfo exists" no longer reports a window as existing if it is
  487.     in the process of being destroyed.
  488.  
  489.     24. The -padx and -pady options for the button family of widgets
  490.     are ignored if the button is displaying an image or bitmap;  padding
  491.     is zero in these cases.
  492.  
  493.     25. In radiobuttons the -value option no longer defaults to the name
  494.     of the widget:  an empty string is a valid value for it.
  495.  
  496.     26. The -menu option for menubuttons and cascade menu entries must
  497.     refer to a child of the menubutton or menu.
  498.  
  499.     27. The interpretation of "@y" in menus has changed:  it no longer
  500.     returns "none".  The "invoke" and "activate" commands no longer post
  501.     submenus;  must use the new "postcascade" command instead.  The
  502.     -command option for a cascade entry is only executed when the entry
  503.     is invoked, and not when it is posted.  Most uses of the -command
  504.     option should switch to using the -postcommand option on the submenu
  505.     instead.
  506.  
  507.     28. When a canvas item is in "-style arc" mode, it draws itself
  508.     using the -outline and -outlinestipple options rather than the
  509.     -fill and -stipple options.
  510.  
  511.     29. The selection targets APPLICATION and WINDOW_NAME have been replaced
  512.     with TK_APPLICATION and TK_WINDOW.
  513.  
  514.     30. There is no longer a default focus, and "focus none" is no longer
  515.     supported.  The focus command now returns an empty string instead of
  516.     "none" to signal that the application doesn't have the input focus.
  517.  
  518.     31. FocusIn and FocusOut events now use the standard X mechanism, so
  519.     the number and types of these events is different now.
  520.  
  521.     32. "wm maxsize" and "wm minsize" no longer accept empty arguments.
  522.  
  523.     33. The -scrollincrement option for canvases has been replaced with
  524.     separate -xscrollincrement and -yscrollincrement options.
  525.  
  526.     34. In the placer, if you specify both -x and -relx then they *add*
  527.     instead of the most recently-specified one takin precedence.
  528.  
  529.     35. The "tk colormodel" command no longer exists.  To find out whether
  530.     a screen is mono or color, use "winfo depth" instead.
  531.  
  532. Here are the incompatibilities that affect C code that uses the Tk
  533. library:
  534.  
  535.     1. The arguments to Tk_ManageGeometry have changed.
  536.  
  537.     2. The "main" procedure is no longer provided by Tk;  it should now
  538.     be in the same file as Tcl_AppInit (see tkAppInit.c for an example).
  539.  
  540.     3. "fill" justify mode is no longer supported by Tk_GetJustify, and
  541.     the TK_CONFIG_JUSTIFY flat no longer exists (no widgets actually
  542.     supported this mode anyway).
  543.  
  544.     4. The procedures Tk_GetSelection, Tk_CreateSeleHandler, and
  545.     Tk_ClearSelection now take an additional "selection" argument.
  546.  
  547.     5. The obsolete procedure Tk_CreateFocusHandler has been removed.
  548.  
  549.     6. The procedure Tk_RegisterInterp no longer exists;  Tk_SetAppName
  550.     now provides similar functionality.
  551.  
  552.     7. The "interp" argument to Tk_GetcolorByValue has been eliminated.
  553.  
  554.     8. The procedures Tk_GetColorModel and Tk_SetColorModel have been
  555.     eliminated.
  556.  
  557.     9. The arguments to many of the Tk_3D procedures (e.g.,
  558.     Tk_Draw3DRectangle) have been changed to take a Tk_Window argument
  559.     instead of (Display *).
  560.  
  561.     10. Tk_GetColor, Tk_GetColorByValue, and Tk_Get3DBorder no longer
  562.     take colormap arguments.
  563.  
  564.     11. Changed interfaces throughout Tk to use type "int" instead of
  565.     "unsigned".
  566.  
  567. 8. Tcl/Tk newsgroup
  568. -------------------
  569.  
  570. There is a network news group "comp.lang.tcl" intended for the exchange
  571. of information about Tcl, Tk, and related applications.  Feel free to use
  572. this newsgroup both for general information questions and for bug reports.
  573. I read the newsgroup and will attempt to fix bugs and problems reported
  574. to it.
  575.  
  576. 9. Tcl/Tk contributed archive
  577. --------------------------
  578.  
  579. Many people have created exciting packages and applications based on Tcl
  580. and/or Tk and made them freely available to the Tcl community.  An archive
  581. of these contributions is kept on the machine ftp.aud.alcatel.com.  You
  582. can access the archive using anonymous FTP;  the Tcl contributed archive is
  583. in the directory "/tcl".  The archive also contains several FAQ ("frequently
  584. asked questions") documents that provide solutions to problems that
  585. are commonly encountered by TCL newcomers.
  586.  
  587. 10. Support and bug fixes
  588. ------------------------
  589.  
  590. We're very interested in receiving bug reports and suggestions for
  591. improvements.  I suggest sending this information to the comp.lang.tcl
  592. newsgroup rather than to me.  We'll see anything on comp.lang.tcl,
  593. and in addition someone else who reads comp.lang.tcl may be able to
  594. offer a solution.  Bugs usually get fixed in 1-3 weeks but enhancements
  595. may take a while and may not happen at all unless there is widespread
  596. support for them (I'm trying to slow the rate at which Tk turns into
  597. a kitchen sink).  It's becoming increasingly difficult to make
  598. incompatible changes to Tk, but it's not totally out of the question.
  599.  
  600. When reporting bugs, please provide a short wish script that we can
  601. use to reproduce the bug.  Make sure that the script runs with a
  602. bare-bones wish and doesn't depend on any extensions.  Also, please
  603. include three additional pieces of information with the script:
  604.     (a) how do I use the script to make the problem happen (e.g.
  605.     what things do I click on, in what order)?
  606.     (b) what happens when you do these things (presumably this is
  607.         undesirable)?
  608.     (c) what did you expect to happen instead?
  609.  
  610. The Tcl/Tk community is too large for us to provide much individual
  611. support for users.  If you need help I suggest that you post questions
  612. to comp.lang.tcl.  We read the newsgroup and will attempt to answer
  613. esoteric questions for which no-one else is likely to know the answer.
  614. In addition, Tcl/Tk support and training are available commercially from
  615. NeoSoft (info@neosoft.com), Computerized Processes Unlimited
  616. (gwl@cpu.com), and Data Kinetics (education@dkl.com).
  617.  
  618. 11. Release organization
  619. ---------------------------
  620.  
  621. Each Tk release is identified by two numbers separated by a dot, e.g.
  622. 3.2 or 3.3.  If a new release contains changes that are likely to break
  623. existing C code or Tcl scripts then the major release number increments
  624. and the minor number resets to zero: 3.0, 4.0, etc.  If a new release
  625. contains only bug fixes and compatible changes, then the minor number
  626. increments without changing the major number, e.g. 3.1, 3.2, etc.  If
  627. you have C code or Tcl scripts that work with release X.Y, then they
  628. should also work with any release X.Z as long as Z > Y.
  629.  
  630. Beta releases have an additional suffix of the form bx.  For example,
  631. Tk 3.3b1 is the first beta release of Tk version 3.3, Tk 3.3b2 is
  632. the second beta release, and so on.  A beta release is an initial
  633. version of a new release, used to fix bugs and bad features before
  634. declaring the release stable.  Each new release will be preceded by
  635. one or more beta releases.  We hope that lots of people will try out
  636. the beta releases and report problems.  We'll make new beta releases
  637. to fix the problems, until eventually there is a beta release that
  638. appears to be stable.  Once this occurs we'll remove the beta suffix
  639. so that the last beta release becomes the official release.
  640.  
  641. If a new release contains incompatibilities (e.g. 4.0) then we can't
  642. promise to maintain compatibility among its beta releases.  For example,
  643. release 4.0b2 may not be backward compatible with 4.0b1.  we'll try
  644. to minimize incompatibilities between beta releases, but if a major
  645. problem turns up then we'll fix it even if it introduces an
  646. incompatibility.  Once the official release is made then there won't
  647. be any more incompatibilities until the next release with a new major
  648. version number.
  649.